# -*- coding: utf-8 -*-

from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext

from projekty.models import *
from projekty.forms import *

from session_messages import create_message
from django.core.urlresolvers import reverse

def indeks(request, strona=1):
    projekty = Projekt.objects.all()
    return render_to_response('projekty/indeks.html', locals(), context_instance=RequestContext(request))

def projekt(request, slug=None):
    projekt = get_object_or_404(Projekt, link=slug)
    if request.user in projekt.admins.all(): projekt.is_admin = True
    if request.user in projekt.admins.all(): admin=True
    return render_to_response('projekty/projekt.html', locals(), context_instance=RequestContext(request))

def zadanie(request, id=0):
    zadanie = get_object_or_404(Zadanie, id=id)
    if request.method == 'POST':
		post = ZadaniePost(autor=request.user, zadanie=zadanie)
		form = ZadaniePostForm(request.POST, instance=post)
		if form.is_valid():
			form.save()
    form = ZadaniePostForm()
    if request.user in zadanie.projekt.admins.all(): admin=True
    return render_to_response('projekty/zadanie.html', locals(), context_instance=RequestContext(request))

def dyskusja(request, id=0):
    dyskusja = get_object_or_404(DyskusjaTemat, id=id)
    if request.method == 'POST':
		post = DyskusjaPost(autor=request.user, temat=dyskusja)
		form = DyskusjaPostForm(request.POST, instance=post)
		if form.is_valid():
			form.save()
    form = DyskusjaPostForm()
    if request.user in dyskusja.projekt.admins.all(): admin=True
    return render_to_response('projekty/dyskusja.html', locals(), context_instance=RequestContext(request))

def wiki(request, id=0):
    art = get_object_or_404(Wiki, id=id)
    if request.user in art.projekt.admins.all(): admin=True
    return render_to_response('projekty/wiki.html', locals(), context_instance=RequestContext(request))

from django.contrib.auth.decorators import permission_required

@permission_required('projekty.add_projekt')
def dodaj(request):
    form = ProjektForm
    if request.method == "POST":
	proj = Projekt(zalozyciel=request.user)
	form = form(request.POST, instance=proj)
	if form.is_valid():
	    form.save()
	    create_message(request, u'Projekt %s został utworzony'%form.cleaned_data['nazwa'])
	    return HttpResponseRedirect(reverse('projekty_indeks'))
    else:
	form = form()
    return render_to_response('projekty/dodaj.html', locals(), context_instance=RequestContext(request))

def edytuj(request, projekt_id):
    proj = Projekt.objects.get(id=projekt_id)
    if request.user in proj.admins.all():
	form = ProjektForm
	if request.method == "POST":
	    form = form(request.POST, instance=proj)
	    if form.is_valid():
		form.save()
		create_message(request, u'Projekt %s został zmieniony'%form.cleaned_data['nazwa'])
		return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
	else:
	    form = form(instance=proj)
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'id':projekt_id}))
    return render_to_response('projekty/edytuj.html', locals(), context_instance=RequestContext(request))

def dodaj_zadanie(request, projekt_id):
    proj = Projekt.objects.get(id=projekt_id)
    if request.user in proj.admins.all():
	form = ZadanieForm
	if request.method == "POST":
	    zad = Zadanie(projekt=proj)
	    form = form(request.POST, instance=zad)
	    if form.is_valid():
		form.save()
		create_message(request, u'Zadanie do projektu %s zostało dodane'%proj.nazwa)
		return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link,}))
	else:
	    form = form()
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
    return render_to_response('projekty/dodaj-zadanie.html', locals(), context_instance=RequestContext(request))

def edytuj_zadanie(request, zadanie_id):
    zad = Zadanie.objects.get(id=zadanie_id)
    proj = zad.projekt
    if request.user in proj.admins.all():
	form = ZadanieForm
	if request.method == "POST":
	    form = form(request.POST, instance=zad)
	    if form.is_valid():
		form.save()
		create_message(request, u'Zadanie nr %s zostało zmienione'%zad.id)
		return HttpResponseRedirect(reverse('projekty_zadanie', kwargs={'id':zad.id}))
	else:
	    form = form(instance=zad)
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_zadanie', kwargs={'id':zad.id}))
    return render_to_response('projekty/edytuj-zadanie.html', locals(), context_instance=RequestContext(request))

def dodaj_dyskusja(request, projekt_id):
    proj = Projekt.objects.get(id=projekt_id)
    if request.user in proj.admins.all():
	form = DyskusjaTematForm
	if request.method == "POST":
	    dyst = DyskusjaTemat(autor=request.user, projekt=proj)
	    form = form(request.POST, instance=dyst)
	    if form.is_valid():
		form.save()
		create_message(request, u'Temat dyskusji do projektu %s został dodany'%proj.nazwa)
		return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link,}))
	else:
	    form = form()
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
    return render_to_response('projekty/dodaj-dyskusja.html', locals(), context_instance=RequestContext(request))

def edytuj_dyskusja(request, dyskusja_id):
    dyst = DyskusjaTemat.objects.get(id=dyskusja_id)
    proj = dyst.projekt
    if request.user in proj.admins.all():
	form = DyskusjaTematForm
	if request.method == "POST":
	    form = form(request.POST, instance=dyst)
	    if form.is_valid():
		form.save()
		create_message(request, u'Temat dyskusji do projektu %s zmieniony'%proj.nazwa)
		return HttpResponseRedirect(reverse('projekty_dyskusja', kwargs={'id':dyst.id}))
	else:
	    form = form(instance=dyst)
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_dyskusja', kwargs={'id':dyst.id}))
    return render_to_response('projekty/edytuj-dyskusja.html', locals(), context_instance=RequestContext(request))

def edytuj_dyskusja_post(request, post_id):
    post = DyskusjaPost.objects.get(id=post_id)
    dyst = post.temat
    proj = dyst.projekt
    if request.user in proj.admins.all() or request.user == post.autor:
	form = DyskusjaPostForm
	if request.method == "POST":
	    form = form(request.POST, instance=post)
	    if form.is_valid():
		form.save()
		create_message(request, u'Post w dyskusji do projektu %s zmieniony'%proj.nazwa)
		return HttpResponseRedirect(reverse('projekty_dyskusja', kwargs={'id':dyst.id}))
	else:
	    form = form(instance=post)
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_dyskusja', kwargs={'id':dyst.id}))
    return render_to_response('projekty/edytuj-dyskusja-post.html', locals(), context_instance=RequestContext(request))

def dodaj_wiki(request, projekt_id):
    proj = Projekt.objects.get(id=projekt_id)
    if request.user in proj.admins.all():
	form = WikiForm
	if request.method == "POST":
	    wiki = Wiki(projekt=proj, autor=request.user)
	    form = form(request.POST, instance=wiki)
	    if form.is_valid():
		form.save()
		create_message(request, u'Wiki art do projektu %s został dodany'%proj.nazwa)
		return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link,}))
	else:
	    form = form()
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
    return render_to_response('projekty/dodaj-wiki.html', locals(), context_instance=RequestContext(request))

def edytuj_wiki(request, wiki_id):
    wiki = Wiki.objects.get(id=wiki_id)
    proj = wiki.projekt
    if request.user in proj.admins.all():
	form = WikiForm
	if request.method == "POST":
	    form = form(request.POST, instance=wiki)
	    if form.is_valid():
		form.save()
		create_message(request, u'Wiki art nr %s został zmieniony'%wiki.id)
		return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
	else:
	    form = form(instance=wiki)
    else:
	create_message(request, u'Nie masz prawa!')
	return HttpResponseRedirect(reverse('projekty_projekt', kwargs={'slug':proj.link}))
    return render_to_response('projekty/edytuj-wiki.html', locals(), context_instance=RequestContext(request))